Bayangkan Anda seorang arsitek. Alih-alih menggambar denah tetap untuk satu rumah bata, Anda merancang sebuah blueprint utama blueprint yang dapat beradaptasi dengan kayu, baja, atau kaca. Dalam C++, hal ini disebut Pemrograman Generik.
1. Mekanisme Blueprint
Sebuah daftar parameter template (misalnya, template <typename T>) memperkenalkan tempat kosong yang disebut parameter tipe template. Ini bertindak sebagai variabel untuk tipe. Misalnya, dalam template <typename T> ostream &print(ostream &os, const T &obj), T ditentukan hanya saat fungsi dipanggil.
2. Instansiasi
Compiler tidak mengompilasi template itu sendiri menjadi kode mesin. Sebaliknya, instansiasi terjadi: compiler menghasilkan versi spesifik dari kode hanya saat diberikan argumen template yang konkret. Karena alasan ini, definisi biasanya harus berada di file header.
3. Menulis Kode Bebas Tipe
Untuk memaksimalkan kemampuan digunakan kembali, ikuti Praktik Terbaik: minimalisasi persyaratan. Menulis kode menggunakan hanya operator < operator (melalui less<T>) mengurangi persyaratan terhadap tipe dibandingkan menggunakan >, <=, dan >=. Validasi sering ditunda; compiler umumnya tidak dapat menemukan banyak kesalahan pada tahap kompilasi template itu sendiri; kebanyakan muncul selama instansiasi.